#include "eqtabelwidget.h"
#include "dm/dmdef.h"
#include "eqctrldelegate.h"

#include <QHeaderView>
#include <QScrollBar>

EqTabelWidget::EqTabelWidget(EqCtrlModel *model, QWidget *parent)
    : AGroupBox{tr(LABEL_EQUALIZER), parent}
{

    tableView = new QTableView(this);

    tableView->setModel(model);

    auto layout = new QVBoxLayout(this);
    layout->addWidget(tableView, 0, Qt::AlignHCenter);

    tableView->setEditTriggers(QTableView::AllEditTriggers);
    tableView->setSelectionMode(QTableView::SingleSelection);
    tableView->setSelectionBehavior(QTableView::SelectItems);

    tableView->horizontalHeader()->setDefaultSectionSize(80 * ratio());
    tableView->verticalHeader()->setDefaultSectionSize(25 * ratio());

    auto freqdel = new SpinBoxDelegate(EQ_FREQUENCY_MIN, EQ_FREQUENCY_MAX, this);
    auto qvaluedel = new QValueSpinBoxDelegate(this);
    auto gaindel = new DoubleSpinBoxDelegate(EQ_GAIN_MIN, EQ_GAIN_MAX, EQ_GAIN_STEP, EQ_GAIN_DECIMAL, this);
    auto typedel = new ComboBoxDelegate(this);

    tableView->setItemDelegateForColumn(0, freqdel);
    tableView->setItemDelegateForColumn(1, qvaluedel);
    tableView->setItemDelegateForColumn(2, gaindel);
    tableView->setItemDelegateForColumn(3, typedel);

    connect(freqdel, &BaseDelegate::startEdit, model, &EqCtrlModel::activateEdit);
    connect(qvaluedel, &BaseDelegate::startEdit, model, &EqCtrlModel::activateEdit);
    connect(gaindel, &BaseDelegate::startEdit, model, &EqCtrlModel::activateEdit);
    connect(typedel, &BaseDelegate::startEdit, model, &EqCtrlModel::activateEdit);
}

// void EqTabelWidget::showEvent(QShowEvent *event)
// {
//     QGroupBox::showEvent(event);
//     // 调整列宽和行高以适应内容
//     // 计算总宽度：所有列宽 + 垂直表头宽度 + 左右边距
//     int totalWidth = tableView->verticalHeader()->width(); // 垂直表头宽度
//     for(int col = 0; col < tableView->model()->columnCount(); col++)
//     {
//         totalWidth += tableView->columnWidth(col);
//     }
//     totalWidth += tableView->contentsMargins().left() + tableView->contentsMargins().right();
//     if (tableView->model()->rowCount() > EQ_15_FREQUENCY_SIZE) { // 垂直滚动条出现
//         totalWidth += tableView->verticalScrollBar()->width();
//     }

//     // 计算总高度：所有行高 + 水平表头高度 + 上下边距
//     int totalHeight = tableView->horizontalHeader()->height(); // 水平表头高度
//     for(int row = 0; row < EQ_15_FREQUENCY_SIZE; row++)
//     {
//         totalHeight += tableView->rowHeight(row);
//     }
//     totalHeight += tableView->contentsMargins().top() + tableView->contentsMargins().bottom();

//     // 设置表格固定大小
//     tableView->setFixedSize(totalWidth, totalHeight);

// }
